package com.usermanage.Service;

import com.usermanage.beanParam.GroupBean;
import com.usermanage.beanParam.PermissionBean;
import com.usermanage.beanParam.UserBean;
import com.usermanage.util.JsonData;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
import java.util.Optional;

/**
 * Created by  on 2018/8/10
 */
public interface UserService {
     /**
      * 用户登陆
      * @param request
      * @param email
      * @param password
      * @return
      * @throws Exception
      */
     JsonData login(HttpServletRequest request, String email, String password,String url,String resource) throws Exception;

     JsonData oapiLogin(HttpServletRequest request,String userId,String url);

     /**
      * 查询用户详细信息
      * @param userId  用户标识(若空则表示查询当前登陆用户信息，若不为空，则查传入用户信息。)
      * @return
      */
     Optional getUserDetail(String userId);

     /**
      * 注册用户
      * @param userBean
      * @return
      */
     UserBean save(UserBean userBean) throws Exception;

     /**
      * 验证用户是否存在
      * @param userBean
      * @return
      */
     Boolean isExisit(UserBean userBean);


     /**
      * 分页得到用户信息
      * @param key
      * @param page
      * @param size
      * @return
      */
     List<UserBean> getAllUserList(String key,String page,String size);

     /**
      * 分页得到用户信息记录数
      * @param key
      * @return
      */
     int getAllUserListCount(String key);


     /**
      * 根据id查询用户
      * @param id
      * @return
      */
     Optional<UserBean> findById(int id);


     /**
      * 根据id查询关联详情
      * @param id
      * @return
      */
     UserBean findUserDetail(String id) throws Exception;

     /**
      * 合作商户根据用户名，企业id搜索本企业用户
      * @param name
      * @param companyId
      * @return
      */
     List<UserBean> findUserByUserNameAndCompanyId(String name,String companyId);

     /*
     根据企业ID查询用户列表
      */
     List<UserBean> findUserByCompanyId(String companyId);
     /*
     根据groupId查询用户列表
      */
     List<UserBean> findAllUserByGroupId(String groupId);

     /**
      * 总公司管理员收索所有用户
      * @param name
      * @return
      */
     List<UserBean> findAllUserByUserName(String name);


     /**
      * 第三方接口登陆获取用户信息
      * @param email
      * @return
      * @throws Exception
      */
     JsonData loginPort(String email) throws Exception;

     /**
      * 第三方接口登陆获取用户信息
      * @param user_name
      * @return
      * @throws Exception
      */
     Map findUserIdForPort(String user_name,String companyId) throws Exception;

     /**
      * 查询渠道商管理员列表
      * @param key
      * @param page
      * @param size
      * @return
      */
     List<UserBean> getCustomUserList(String key, String page, String size);

     /**
      * 查询渠道商管理员列表记录数
      * @param key
      * @return
      */
     int getCustomUserListCount(String key);

     /**
      * 查询系统所有用户
      * @return
      */
     List<UserBean> getAllUserList();

     /**
      * 根据当前登陆用户信息获取权限列表
      */
     List<PermissionBean> getPermissionList();
}
